# @Time : 2024-10-24 10:34
# @Author : Fioman 
# @Phone : 13149920693
"""
type(): 返回对象的实际类型,type(obj1) == type(obj2) 会严格匹配对象的类型(只匹配直接关系,不考虑继承关系)
             所以使用type()比较类型的时候,子类和父类会被当成不同的类型

isinstance(obj,Class): 检查对象是否是某个类或者子类的实例.不仅仅检查当前的类型,还好检查是否是其父类或者
是其祖先类.
"""


class Animal:
    pass


class Dog(Animal):
    pass


dog = Dog()
print(type(dog) == Animal)  # False
print(type(dog) == Dog)  # True

print(isinstance(dog, Dog))  # True
print(isinstance(dog, Animal))  # True

# 使用instance进行多类型检查,后面的参数可以提供为一个类型的元组序列,只要一个满足,就返回True
print(isinstance(3.14, (int, float)))
print(isinstance(list, (list, tuple, set, type)))
print(isinstance(Dog, (type, Animal)))
